﻿		(function () {
		
			_window = null;
			$cont = null;
			var oldStyle;
			$contBackground = null;
			function hideCont(e){
				$cont.hide();
			};
			function showCont(e){
				if (! $cont.is(":visible")){
					$cont.show();
				}
			};
			
			var module = {
				pics : {
					open : "%3D%3D",
			
					msg : "",
		
					dial : "%3D",
				
					pict : "%3D%3D",
				
					audio : "",
				
					video : "%3D",
					news : "",
					sharewall :					""
				}
			}
			
			$.extend(module,{
				version : "0.0.9",
				url : "http://vuzzle.googlecode.com/svn/release/usermodules/floatmenu.js",
				updateUrl : "http://vuzzle.googlecode.com/svn/release/usermodules/versions/floatmenu.version",
				name : "floatmenu",
				title : "Vu-Менюшка",
				description : "Добавляет меню	 по нажатию правой кнопки мыши или наведении курсора на аватарке/сслыке пользователя.",
				author : "konstantin89",
				icon : null,
				depends : [],
				settings : {
					sett1 : {
						text : "Показывать меню по нажатию правой кнопки мыши",
						type : "checkbox",
						value : false,
						title : "Меню будет отображаться не при наведении, а при нажатии правой кнопки мыши на аватаре или на ссылке профиля."
					},
					roundMenu : {
						text : "Круглое меню",
						type : "checkbox",
						value : false,
						title : "Заменяет простое прямоугольное меню на круглое"
					},
					radius : {
						text : "Радиус круглой менюшки",
						type : "input:int",
						value : 48,
						title : "Устанавливает радиус круглой менюшки"
						
					},
					newWin : {
						text : "Открывать ссылки в новом окне",
						type : "checkbox",
						value : true,
						title : "Открывать ссылки в новом окне"
						
					}
				},
				items : [{
					"title" : "Открыть в новом окне",
					"icon" : module.pics.open,
					"link" : "/id%id",
					"funct" : function(id){window.open("/id"+id,"_blank");hideCont()}
					},{
					"title" : "Отправить сообщение",
					"icon" : module.pics.msg,
					"link" : "/mail?act=write&to=%id",
					"funct": function(id){
					
											if($("#floatmenu_msg")[0] == undefined){
		
												new vu.ui.Window({
													element: $("<textarea style= 'width:100%;height:100%' class= '"+id+"' id= 'floatmenu_msg'></textarea>"),
													lable: "Отправить сообщение пользователю",
													idString: "floatmenu_msg$cont"
												});
												
												$("#floatmenu_msg").parent().parent().parent().show();
												
												$("#floatmenu_msg").keypress(function(e)
													{
														if ((e.ctrlKey == true) && (e.keyCode == 13)) {
														
															alert("send msg '"+module.value+"' to "+module.className);
															module.value = "";
														};
													});
		
											}else{
												$("#floatmenu_msg").parent().parent().parent().show();
												$("#floatmenu_msg").attr("class",id);
												
		
											}
		
							}
					},{
					"title" : "Диалоги",
					"icon" : module.pics.dial,
					"funct" : function(id){window.open("/im.php?act=a_box&popup=1&sel="+id,"_blank",
					'width=810,height=670,toolbar=0,location=0,directories=0,menubar=0,scrollbars=0,status=0');
					hideCont()}
					},{
					"title" : "Новости пользователя",
					"icon" : module.pics.news,
					"link" : "/feed?owner=%id&section=owner"
					},{
					"title" : "Альбомы пользователя",
					"icon" : module.pics.pict,
					"link" : "/albums%id"
					},{
					"title" : "Аудиозаписи пользователя",
					"icon" : module.pics.audio,
					"link" : "/audio?id=%id"
					},{
					"title" : "Видеозаписи пользователя",
					"icon" : module.pics.video,
					"link" : "/videos%id"
					},{
					"title" : "Общие записи на стене",
					"icon" : module.pics.sharewall,
					"link" : "/wall"+vu.vk.currentUser.id+"?with=%id"
					}
					/*,{
					"title" : "Добавить в черный список",
					"icon" : module.pics.sharewall,
					"funct" : function(id){
						alert("id:"+id+";hash:"+cur.options.blacklist_hash)
					},{
					"title" : "Удалить из подписчиков",
					"icon" : module.pics.sharewall,
					"funct" : function(id){
						alert("id:"+id+";hash:"+cur.options.blacklist_hash)
					}
					}*/
					],
				onApplySettings : function () {	
						this.removeElements();
						this.init();
				},
				onUninstall : function () {
					this.removeElements();
					this.init();
				},
				removeElements : function(){
					$cont.unbind("mouseout",hideCont);
					$cont.unbind("mouseover",showCont);
					var bind = module.settings.sett1.value ? "contextmenu" : "mousemove";
					$body.unbind( bind , module.processEvent);
					$cont.remove();
				},
				processEvent : function (e) {
						var id;
						if( (e.target.tagName === "IMG" || e.target.tagName === "A" ) && !e.shiftKey ){
		
							if(
								e.target.tagName === "A" && !e.target.className.match(/published_by|mem_link/)
								&& !e.target.id.match(/pv_download/)
								&& e.target.href && e.target.href.match(/\/\w+/)
								&& e.target.parentNode.className.match(/text|reply_text|people_name|name_field|fl_l pv_comm|mv_comm|name wrapped/)
							){		
								if (e.target.href.match(/id\d+/)){
									id = e.target.href.match(/id(\d+)/)[1];
								}else if($(e.target).parent().hasClass("name_field")){
									var src = $(e.target).parent().parent().find("img").attr("src");
								}else{
									var src = $(e.target).parent().parent().parent().find("img").attr("src");
								};
								e.target.innerHTML ? $cont.attr("title",e.target.innerHTML) : $cont.removeAttr("title") ;
							} else if (e.target.tagName === "IMG"){
								var src = e.target.src;
							}
							
							if(src && ( src.match(/e_\w+\.jpg/i) || src.match(/d_\w+\.jpg/i) ) && !src.match(/g\d+/)){
								if (e.target.tagName == "IMG") {
									(e.target.parentNode.title) ? $cont.attr("title",e.target.parentNode.title) : $cont.removeAttr("title") ;
								}
								
								id = src.match(/u(\d+)/)[1];
								if( id === vu.vk.currentUser.id ){
									return ;
								}
		
							}
							if (id){
								$cont.find("a").each(function(i,el){
									if(!module.items[i].link){
			
										$(el).unbind('click');
										
										$(el).bind('click',function(){
											module.items[i].funct(id);
										});
										
									}else{
										el.href =module. items[i].link.replace(/%id/,id);
										
										if(module.settings.newWin.value){
											el.setAttribute("target","_blank");
										}
									}
								});
								/*
								if( box.settings.sett2.value ){
								
									setClipboard(e.target.href ? e.target.href : e.target.parentNode.href);
		
								};
								*/
								
								if (module.settings.roundMenu.value){
									$cont.css({"top":e.pageY - $window.scrollTop()-$cont.height()/2, "left":e.pageX -$window.scrollLeft()-$cont.width()/2});
								}else {
									$cont.css({"top":e.pageY-$window.scrollTop()-10, "left":e.pageX-$window.scrollLeft()-20});
								}
								//contBackground.width($cont.width()).height($cont.height());
								
								$cont.show();
							
								return false;
							}
						}
					
					},
				createButtons : function(){
					//собираем кнопки
					for (var i in module.items){
						var link = module.items[i].link?"href='"+module.items[i].link+"'":"";
						$content =  $("<a title='"+module.items[i].title+"' "+link+"><img  title='"+module.items[i].title+"' width='24px' height='24px' style='vertical-align: middle; margin: 2px' src='"+module.items[i].icon+"'></a>");
							if (module.settings.roundMenu.value ){
								var cssObj = {
									position : "absolute",
									left: Math.floor( (module.settings.radius.value - 12 - 2)*( 1+ Math.cos(2*Math.PI*i/module.items.length - Math.PI/2))),
									top: Math.floor((module.settings.radius.value - 12 - 2)* (1 + Math.sin(2*Math.PI*i/module.items.length  - Math.PI/2)))
								}	
							} else {
								var cssObj = {
									position : "relative"
								}
							}
						$content.css(cssObj);
						$cont.append($content);
					};
					//втыкаем их в контейнер	
				},
				createContainer : function(){
					
					if (this.settings.roundMenu.value){
						var css1 = {position:"fixed", 
									zIndex:"9999",
									display:"none", 
									height : module.settings.radius.value*2, 
									width: module.settings.radius.value*2
									};
									
						var css2 = {position:"relative",
									backgroundColor:"black",
									opacity:0.5,
									height: module.settings.radius.value*2,
									width : module.settings.radius.value*2,
									zIndex:-1,
									"border-radius" : "48px 48px 48px 48px",
									"-moz-border-radius" : "48px 48px 48px 48px"};
					} else {
						var css1 = {position:"fixed", 
									zIndex:"9999",
									display:"none", 
									height : 32, 
									paddingTop : 20};
									
						var css2 = {position:"relative",
									backgroundColor:"black",
									top: -30,
									opacity:0.5,
									height: 32,
									zIndex:-1,
									"border-radius": "8px 8px 8px 8px",
									"-moz-border-radius" : "8px 8px 8px 8px"};
					}
				
					$cont = $("<div/>");
					$cont.attr("id","floatmenuCont");
					$cont.css(css1);
					
					$contBackground = $("<div></div>");
					$contBackground.css(css2);
		
		
					$body.append($cont);
					this.createButtons();
					$cont.append($contBackground);
				},
				init : function () {
		
				//todo
				//?make send msg interface
				//?make isFriend check
				//
				//контейнер под кнопки
					this.createContainer();
					/*
					if( box.settings.sett2.value ){
						var flashObj = $("<object width='30' id='my_clipboard_flash' height='22' data='http://cs5258.vkontakte.ru/u6076769/7815a541ac9245.zip'"
						+ " type='application/x-shockwave-flash'></object> ");
						
						function setClipboard(a){
							//flashObj.attr("flashvars","txtToCopy=" + a);
							document.getElementById("my_clipboard_flash").setAttribute('flashvars', "txtToCopy=" + a);
						};
						//$body.append(flashObj);	
						//cont.append(flashObj);
					};
					*/
			//функция для скрытия контейнера		
					
			
			//$body.bind("contextmenu", function(e){if(e.target.tagName == "A"){alert($(e.target).parent().parent().parent().find("img").attr("src"))}return false;}) 
					$cont.bind("mouseover", showCont);
					$cont.bind("mouseout", hideCont);
					
					
					var bind = module.settings.sett1.value ? "contextmenu" : "mousemove";
					$body.bind( bind , module.processEvent);
				}
			});
			return module;
		})();